﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Biblioteca.Utils;
using Biblioteca.Objetos;
using SEG.Utils;
using Biblioteca.DataBase;
using System.Data.Common;
using SEG.Objetos;
using System.Collections.Generic;
using Pms.Utils;


namespace SEG
{
    public partial class UsuarioEmpresaManut : System.Web.UI.Page
    {
        Usuario usuAut;
        string codUsu;


        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.Count == 0)
                Response.Redirect("~/Login.aspx");
            else
            {
                usuAut = (Usuario)Session["usuario"];
                char perm = BiblioPMS.VerifiquePermissao("USUARIOEMPRESAMANUT.ASPX", BiblioPMS.aplicacaoSEG, usuAut.Login);
                if (perm.Equals('N'))
                    Response.Redirect("Inicio.aspx");

  
                if (Request["codUsu"] != null)
                {
                    codUsu = Criptografia.Descriptografar(Request["codUsu"]);
                    lblUsuario.Text = Usu.ObterNomeUsuario(codUsu, usuAut.Login);
                }

                if (!Page.IsPostBack)
                {
                    hplVoltar.NavigateUrl = "UsuarioEmpresa.aspx?codUsu=" + Server.UrlEncode(Criptografia.Criptografar(codUsu));  
                    PreencherControles();
                }
            }

        }

        private void PreencherControles()
        {
            PreencherListEmpresas();
            PreencherListUsuarioEmpresa();
        }

        private void PreencherListUsuarioEmpresa()
        {
            try
            {
                listEmpresasCadastradas.Items.Clear();

                List<Empresa> listEmpresas = Empresa.ObterEmpresas(usuAut.Login, codUsu);

                if (listEmpresas != null)
                {
                    foreach (Empresa objEmpresa in listEmpresas)
                    {
                        ListItem item = new ListItem(objEmpresa.Nom_Empresa, objEmpresa.Cod_Empresa);
                        listEmpresasCadastradas.Items.Add(item);
                    }
                }               

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        private void PreencherListEmpresas()
        {
            try
            {
                listEmpresasUsu.Items.Clear();

                List<Empresa> listEmpresas = Empresa.ObterEmpresasNaoViculadas(usuAut.Login, codUsu);

                if (listEmpresas != null)
                {
                    foreach (Empresa objEmpresa in listEmpresas)
                    {
                        ListItem item = new ListItem(objEmpresa.Nom_Empresa, objEmpresa.Cod_Empresa);
                        listEmpresasUsu.Items.Add(item);
                    }
                }

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void btnAddEmpresa_Click(object sender, EventArgs e)
        {
            try
            {
                List<Usuario_Empresa> listUsuEmp = new List<Usuario_Empresa>();

                foreach (ListItem item in listEmpresasUsu.Items)
                {
                    if (item.Selected)
                    {
                        Usuario_Empresa objUsuEmp = new Usuario_Empresa(item.Value,codUsu);
                        objUsuEmp.Padrao = "F";
                        listUsuEmp.Add(objUsuEmp);
                    }
                }


                if (listUsuEmp != null)
                    Usuario_Empresa.Inserir(usuAut.Login, listUsuEmp);

                listEmpresasUsu.Items.Clear();

                PreencherListEmpresas();

                listEmpresasCadastradas.Items.Clear();

                PreencherListUsuarioEmpresa();
            }

            catch (Exception ex)
            {

                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }



        }

        protected void btnRemoveEmp_Click(object sender, EventArgs e)
        {
            try
            {
                List<Usuario_Empresa> listUsuEmp = new List<Usuario_Empresa>();

                foreach (ListItem item in listEmpresasCadastradas.Items)
                {
                    if (item.Selected)
                    {
                        Usuario_Empresa objUsuEmp = new Usuario_Empresa(item.Value, codUsu);
                        listUsuEmp.Add(objUsuEmp);
                    }
                }


                if (listUsuEmp != null)
                    Usuario_Empresa.Excluir(usuAut.Login, listUsuEmp);

                listEmpresasUsu.Items.Clear();

                PreencherListEmpresas();

                listEmpresasCadastradas.Items.Clear();

                PreencherListUsuarioEmpresa();
            }

            catch (Exception ex)
            {

                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }

        }


    }
}
